Modern electronic systems such as computer systems contain multiple components or devices coupled to one or more buses. Typically, these devices are integrated circuit (IC) packages, known as “IC chips” with multiple interfaces coupling each device to a bus. The devices may include, for example, processors, micro-controllers, graphics controllers, bus interface circuits, input/output (IO) circuits, memory devices, mass storage devices, etc. In order for the computer system to operate properly, these devices should be able to communicate effectively with each other via the bus.
Existing computer systems typically transfer data between devices via one or more buses in accordance with a predefined clocking scheme. Data may be transferred between devices in a source synchronous fashion, i.e., the transmitting and receiving devices operate synchronously, in order to increase the speed of data transmission.
In a source synchronous scheme, one or more strobe (clock) signals are transmitted along with the data from the transmitting device along a transmission path, via one or more buses, utilizing current strobing techniques, such as, center strobing, concurrent strobing and/or differential strobing schemes. At the receiving device, the strobe signals are then used to latch or match the data transmitted from the transmitting device within a timing window (i.e., the time from outputting data from the transmitting device to the time that the receiving device samples such data in a clock cycle), for subsequent data processing functions.
However, the rising and falling edges of the data and strobe signals utilized by current strobing techniques on the buses commonly have different edge rates and timings due to process variations between the pull-up circuitry and the pull-down circuitry of the source synchronous driver in the transmitting device and due to different return paths for power and ground supplies or other effects such as noise and/or temperature variations. These effects create a systematic or consistent variation between the rising and falling edges of the data and strobe signals and drift to a metastable state that can undermine the system performance and data transfer rates.
Accordingly, there is a need for a source synchronous system in which the systematic variation between the rising and falling edges of the data and strobe signals can be effectively and efficiently compensated in order to provide improved timings and enhanced system performance.